import 'package:flutter/material.dart';
import 'package:get/get.dart';
import '../../../common/routers/names.dart';
import '../../../common/services/storage_service.dart';

class MainController extends GetxController {
  MainController();

  // 当前选中的底部导航栏索引
  int currentIndex = 0;

  // 底部导航栏标签
  final List<String> tabTitles = ['设备租赁', '订单管理', '消息中心', '我的'];
  
  // 底部导航栏图标
  final List<String> tabIcons = ['🏗️', '📋', '💬', '👤'];

  // 对应的路由名称 - 用于页面组件解耦
  final List<String> tabRoutes = [
    RouteNames.rentalDeviceIndex,
    RouteNames.orderOrderIndex,
    RouteNames.msgMsgIndex,
    RouteNames.myMyIndex,
  ];

  // 每个tab的缩放状态 - 用于点击动画效果
  final List<double> _tabScales = [1.0, 1.0, 1.0, 1.0];

  _initData() {
    update(["main"]);
  }

  // 切换底部导航栏
  void changeTabIndex(int index) {
    if (currentIndex != index) {
      currentIndex = index;
      update(["main"]);
    }
  }

  // 获取指定tab的缩放值
  double getTabScale(int index) {
    return _tabScales[index];
  }

  // tab点击事件
  void onTabTap(int index) {
    final routeName = tabRoutes[index];
    
    // 检查是否需要登录
    if (_needsAuth(routeName)) {
      final storageService = Get.find<StorageService>();
      if (!storageService.isLoggedIn) {
        // 未登录，跳转到登录页面
        debugPrint('🔒 用户未登录，跳转到登录页面');
        debugPrint('🔗 尝试访问的页面: $routeName');
        
        // 保存当前要访问的路由，登录后可以返回
        storageService.setString('redirect_route', routeName);
        
        // 跳转到登录页面
        Get.toNamed(RouteNames.systemLogin);
        return;
      }
    }
    
    debugPrint('✅ 允许访问: $routeName');
    // 正常切换tab
    changeTabIndex(index);
  }
  
  // 检查路由是否需要认证
  bool _needsAuth(String routeName) {
    const authRequiredRoutes = [
      RouteNames.orderOrderIndex,
      RouteNames.msgMsgIndex,
      RouteNames.myMyIndex,
    ];
    return authRequiredRoutes.contains(routeName);
  }

  // tab按下事件 - 开始缩放动画
  void onTabTapDown(int index) {
    _tabScales[index] = 0.9; // 缩小到90%
    update(["tab_$index"]);
  }

  // tab抬起事件 - 恢复原始大小
  void onTabTapUp(int index) {
    _tabScales[index] = 1.0; // 恢复到100%
    update(["tab_$index"]);
  }

  // tab取消事件 - 恢复原始大小
  void onTabTapCancel(int index) {
    _tabScales[index] = 1.0; // 恢复到100%
    update(["tab_$index"]);
  }

  void onTap() {}

  // @override
  // void onInit() {
  //   super.onInit();
  // }

  @override
  void onReady() {
    super.onReady();
    _initData();
  }

  // @override
  // void onClose() {
  //   super.onClose();
  // }
}
